A programmable logic controller (PLC) is a specialized computer control system configured to execute software which continuously gathers data on the state of input devices to control the state of output devices. A PLC typically includes three major components: a processor (which may include volatile memory), volatile memory comprising an application program, and one or more input/output (I/O) ports for connecting to other devices in the automation system.
PLCs are utilized in various industrial settings to control automation systems. Automation systems typically generate a large amount of data in their daily operations. This data may include, for example, sensor data, actuator and control program parameters, and information associated with service activities. However, conventional automation systems, and PLCs in particular, are not capable of adequately handling this data. For example, in most systems, due to hardware and software limitations, only a small fraction of automation system data can be analyzed and stored. Massive amounts of irrelevant data may be produced while important data points are missed. Compression may be applied at the higher automation layers on unimportant data, while important data is lost while travelling through the automation layers. Moreover, even where there are attempts to avoid the loss of data, there may be significant demands placed on the rest of the computing infrastructure. For example, the PLC data processing may result in a high demand on the network bandwidth as well as storage capacity. Additionally, the context of data may be lost while data passed through automation system layers. This causes several undesired secondary effects on the automation system. For example, if data analytics are performed at higher automation layers based on low quality/fidelity data, important data may be lost causing the automation system to operate inefficiently or sub-optimally.
As a result of insufficient data handling capabilities at the control layer, quality problems are usually detected late. In conventional systems, only a few process variables can be continuously monitored at the higher automation layers (e.g., Supervisory Control and Data Acquisition) with adequate fidelity. Although the most relevant sensors (e.g., temperature and pressure of a fermentation tank, or a position sensor in a car door assembly cell) are monitored, many other variables, including important control variables, are ignored even though these variables may also be used to identify certain problems. Examples of important variables that may not be exposed to high automation layers include, without limitation, pressure valve position, coolant flow rate, oscillation control loop count, positioning time, etc. Such variables hold important control knowledge that might indicate quality problems in an early stage.
Additionally, due to insufficient data handling capabilities, control knowledge is not sent to the higher automation layers for business analytics. Typically the control knowledge is hidden inside the control program that runs into the controller or it is available only at the engineering system (e.g. Siemens TIA Portal software) used to write control programs. A great deal of effort is required to rebuild such control knowledge at higher layers of the automation system. In particular, the realization of higher level software functionality in Supervisory Control and Data Acquisition, Manufacturing Execution Systems, or Enterprise Resource Planning systems becomes much more complicated and costly. In turn, this leads to higher development and customization costs of these solutions. For example, consider a valve control program for controlling coolant flow until tank temperature reaches a certain level. One can infer that there has to be a certain correlation between coolant flow rate and temperature decrease (with some delay). To detect such correlations (which can be utilized for predictive process monitoring at higher layers) a pairwise correlation analysis using hundreds of parameters is required.